/**
 * 授权辅助工具
 * 用于检查用户登录状态，确保未登录用户只能浏览不能操作
 */

/**
 * 检查用户是否已登录
 * @param {Object} options - 配置选项
 * @param {Boolean} options.showModal - 是否显示登录提示弹窗
 * @param {String} options.title - 弹窗标题
 * @param {String} options.content - 弹窗内容
 * @returns {Boolean} - 是否已登录
 */
export function checkLoginStatus(options = {}) {
  const defaultOptions = {
    showModal: true,
    title: '需要登录',
    content: '此功能需要登录后才能使用，是否前往登录？'
  }
  
  const mergedOptions = { ...defaultOptions, ...options }
  
  // 检查token和用户信息
  const token = uni.getStorageSync('token')
  const userInfo = uni.getStorageSync('userInfo')
  
  if (!token || !userInfo) {
    // 未登录状态
    if (mergedOptions.showModal) {
      uni.showModal({
        title: mergedOptions.title,
        content: mergedOptions.content,
        confirmText: '去登录',
        cancelText: '取消',
        success: (res) => {
          if (res.confirm) {
            uni.navigateTo({
              url: '/pages/login/login'
            })
          }
        }
      })
    }
    return false
  }
  
  return true
}

/**
 * 检查用户是否为游客模式
 * @returns {Boolean} - 是否为游客模式
 */
export function isGuestMode() {
  const userInfo = uni.getStorageSync('userInfo')
  return !userInfo || userInfo.role === -1
}

/**
 * 包装需要登录的方法
 * @param {Function} fn - 需要包装的方法
 * @param {Object} options - 登录检查选项
 * @returns {Function} - 包装后的方法
 */
export function requireLogin(fn, options = {}) {
  return function(...args) {
    if (checkLoginStatus(options)) {
      return fn.apply(this, args)
    }
    return false
  }
}